# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.930.45.1 -> 1.930.45.2 # drivers/hotplug/acpiphp_glue.c 1.3 -> 1.3.1.1 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/02/24 trond.myklebust@fys.uio.no 1.930.46.1 # [PATCH] Fix XID allocation race in 2.4.21-pre4 # # Hi Marcel, # # Olaf discovered that the XID allocation in net/sunrpc/xprt.c was not # entirely protected against SMP races. The following patch adds # spinlocking in order to fix the issue. Please apply ASAP... # # Cheers # Trond # -------------------------------------------- # 03/02/24 ink@jurassic.park.msu.ru 1.930.46.2 # [PATCH] alpha update # # Hi Marcelo, # # here's mostly the same stuff that I sent in a last couple of weeks: # - Nautilus/UP1500 update; # - ndelay() implementation; # # Also, from Jeff.Wiedemeier@hp.com: # - properly handle NUMA nodes without memory in setup_memory(); # - fix "maxcpus=" command line arg breakage; # - fix NULL pointer dereference in core_marvel.c # # Ivan. # -------------------------------------------- # 03/02/24 marcelo@freak.distro.conectiva 1.930.37.5 # Merge http://jfs.bkbits.net/linux-2.4 # into freak.distro.conectiva:/home/marcelo/bk/linux-2.4 # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.6 # [PATCH] available spell fixes # # From: # # Against vanilla 2.4.20, spell fixes for 'available'. # # Regrads - alfredo # # -- # Alfredo Sanjuan # # -------------------------------------------- # 03/02/24 mikal@stillhq.com 1.930.37.7 # [PATCH] Handle scsi_register() failure # # This patch has been generated as part of my scsi_register audit of the 2.5.45 kernel tree. scsi_register() can fail, returning a NULL pointer, and the failure case was not being handled here... # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.8 # [PATCH] correct description of Griffin Powermate # # [ Indeed, the website says "Made of high-quality machined aluminum..." ] # # From: Michael Shields # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.9 # [PATCH] namespace pollution in eth bridge driver # # (Included in 2.5) # From: Arnd Bergmann # # A global variable should not be called 'ioctl_mutex', # this makes it static. # ===== net/bridge/br_ioctl.c 1.1 vs edited ===== # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.10 # [PATCH] drivers_net_wan_sdla_x25.c, typo: the the # # (Included in 2.5) # From: James Mayer # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.11 # [PATCH] Bug in "sys_init_module", kernel_module.c, 2.4.19 # # [ Keith, is this correct? ] # From: Kingsley Cheung # # Hi, # # I've a trivial patch against kernel/module.c for 2.4.19 below that # fixes a problem with the initialisation of a stack of modules. # Though it rarely occurs, without this the kernel can crash when a module # is being initialised and before this initialisation finishes another # *dependent* module is loaded. This occurs when the first module blocks # in init_module and releases the big kernel lock. I discussed this earlier # with Keith Owens but it looks like its been forgotten: # # On Mon, 5 Aug 2002, Keith Owens wrote: # # > On Mon, 5 Aug 2002 17:25:21 +1000 (EST), # > Kingsley Cheung wrote: # > >Anyway, at this point I'm still not certain I've completely grasped your # > >reply. Maybe I didn't make my first email clear. If this is so, then # > >what I was saying is that the invocation of "init_module" functions of # > >*dependent* modules needs be appropriately serialised. Right now # > >"sys_init_module" is relying on the big kernel lock to completely # > >serialise these calls but if any "init_module" function blocks, the # > >kernel lock is released and this serialisation can be broken. Maybe one # > >way to avoid this is to check the flags of modules depended on during # > >"sys_init_module". So if the MOD_RUNNING flag is not set for the module # > >we depend on, then the module currently being loaded must have its # > >invocation of "sys_init_module" wait or return an appropriate error # > >indicating why. # > # > Agreed, this is a bigger problem than a failed module_init(). I am # > going to think about this overnight. # > # # Cheers, # Kingsley # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.12 # [PATCH] es1372.c doesn't free resources correctly # # From: Marcus Alanen # # # ---------- Forwarded message ---------- # Date: Mon, 1 Jul 2002 22:29:35 +0300 (EEST) # From: Marcus Alanen # To: Alan Cox , jgarzik@mandrakesoft.com, # t.sailer@alumni.ethz.ch # Subject: [patch] es1371.c doesn't free resources correctly # # es1371_probe() doesn't free resources correctly if something fails. # # Compiled, not tested. Kernels 2.4 & 2.5. # # ===== es1371.c 1.10 vs edited ===== # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.13 # [PATCH] Typos in drivers_s390_net_iucv.c # # (Included in 2.5) # From: James Mayer # -------------------------------------------- # 03/02/24 schwidefsky@de.ibm.com 1.930.37.14 # [PATCH] s390 base architecture update # # s/390 base architectures changes: # - Fix return code handling of copy_to_user(). # - Add missing system calls: gettid, readahead and tkill. # - Fix oops in program check handler after crypto operation exceptions. # - Fix set_fs value after fork. A new process that has a signal pending # before it ever has been to userspace will crash. # - Fix endless trap loop after exit from /linuxrc. # - Added missing check for SIGURG in signal handler. # - Fix oops in fixup routine of copy_to_user/copy_from_user. # - Adapt to latest path group id algorithm. # - Fix ascii to ebcdic conversion. Strings with size n*256+1 are not # converted correctly. # - Fix tlb flushing in multithreaded programs (race on cpu_vm_mask). # - Clear _PAGE_ISCLEAN bit in pte_mkwrite. # - Fixes for compiling with gcc 3.3: # * inline assembly constraints in _syscall[0-5] macros. # * initialize .bss segment before using it. # - Change size of invalid opcode in BUG() from 2 bytes to 4 bytes. # - Remove annoying 'new level' message from debug feature. # - Add pfix support. This allows to pin page while running under VM. # -------------------------------------------- # 03/02/24 schwidefsky@de.ibm.com 1.930.37.15 # [PATCH] xpram driver fix for 64-bit # # xpram_sizes has to be of type 'unsigned int' or xpram won't work on 64 bit. # -------------------------------------------- # 03/02/24 schwidefsky@de.ibm.com 1.930.37.16 # [PATCH] s390 idals.h update # # New idal support functions. The extended idals.h adds support for idal buffers # and removes some deprecated functions. # -------------------------------------------- # 03/02/24 rusty@rustcorp.com.au 1.930.37.17 # [PATCH] i2c ID addition # # From: Ronald Bultje # # Dear Marcello, # # for a driver, I need an i2c ID in include/linux/i2c-id.h which isn't in # there yet. The ID is there in 2.5.x, but not in 2.4.x. Could this ID # please be added? Patch is against 2.4.20-pre9. # -------------------------------------------- # 03/02/24 eranian@frankl.hpl.hp.com 1.930.44.2 # ia64: perfmon update # # This one does: # - some more clean-ups on inline asm() # - update copyright # - fix bug in sys_perfmonctl(), system calls return long not int (important) # - fix a bug in the PMU interrupt handler # - some ANSI C clean for initialized structs # -------------------------------------------- # 03/02/24 bjorn_helgaas@hp.com 1.930.44.3 # ia64: update defconfigs # -------------------------------------------- # 03/02/24 bjorn_helgaas@hp.com 1.930.44.4 # Merge hp.com:/home/helgaas/bk/to-marcelo-2.4 # into hp.com:/home/helgaas/bk/linux-ia64-2.4 # -------------------------------------------- # 03/02/24 bjorn_helgaas@hp.com 1.930.44.5 # Merge hp.com:/home/helgaas/bk/ia64-extras # into hp.com:/home/helgaas/bk/linux-ia64-2.4 # -------------------------------------------- # 03/02/24 willy@fc.hp.com 1.930.45.2 # Make ACPI hot-plug controller detection check _CID in adddition to _HID. # -------------------------------------------- # diff -Nru a/drivers/hotplug/acpiphp_glue.c b/drivers/hotplug/acpiphp_glue.c --- a/drivers/hotplug/acpiphp_glue.c Wed Oct 8 09:10:06 2003 +++ b/drivers/hotplug/acpiphp_glue.c Wed Oct 8 09:10:06 2003 @@ -747,8 +747,9 @@ /* find hot-pluggable slots, and then find P2P bridge */ -static int add_bridges (acpi_handle *handle) +static int add_bridge(struct acpi_device *device) { + acpi_handle *handle = device->handle; acpi_status status; unsigned long tmp; int seg, bus; @@ -802,36 +803,6 @@ } -/* callback routine to enumerate all the bridges in ACPI namespace */ -static acpi_status -find_host_bridge (acpi_handle handle, u32 lvl, void *context, void **rv) -{ - acpi_status status; - acpi_device_info info; - char objname[5]; - acpi_buffer buffer = { .length = sizeof(objname), - .pointer = objname }; - - status = acpi_get_object_info(handle, &info); - if (ACPI_FAILURE(status)) { - dbg("%s: failed to get bridge information\n", __FUNCTION__); - return AE_OK; /* continue */ - } - - info.hardware_id[sizeof(info.hardware_id)-1] = '\0'; - - /* TBD use acpi_get_devices() API */ - if (info.current_status && - (info.valid & ACPI_VALID_HID) && - strcmp(info.hardware_id, ACPI_PCI_HOST_HID) == 0) { - acpi_get_name(handle, ACPI_SINGLE_NAME, &buffer); - dbg("checking PCI-hotplug capable bridges under [%s]\n", objname); - add_bridges(handle); - } - return AE_OK; -} - - static int power_on_slot (struct acpiphp_slot *slot) { acpi_status status; @@ -1189,6 +1160,14 @@ } } +static struct acpi_driver acpi_pci_hp_driver = { + .name = "pci_hp", + .class = "", + .ids = ACPI_PCI_HOST_HID, + .ops = { + .add = add_bridge, + }, +}; /** * acpiphp_glue_init - initializes all PCI hotplug - ACPI glue data structures @@ -1196,19 +1175,15 @@ */ int acpiphp_glue_init (void) { - acpi_status status; + int num; if (list_empty(&pci_root_buses)) return -1; - status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, find_host_bridge, - NULL, NULL); + num = acpi_bus_register_driver(&acpi_pci_hp_driver); - if (ACPI_FAILURE(status)) { - err("%s: acpi_walk_namespace() failed\n", __FUNCTION__); + if (num <= 0) return -1; - } return 0; }